Real file systems utilize data structures, also referred to as the file system on-disk format, to persist, i.e., maintain and organize, data to stable storage, e.g., a volume, disk, hard drive, etc. File systems access the data and interpret these data structures to store and retrieve data for users and applications, or procedures or computer programs, when executing software instructions or computer code.
Volume on-disk format availability is a high priority for many business operations. From small businesses to global enterprises, more and more industries are increasingly finding it important for their business to be able to access data to service customers around the clock. To this end there is an increased reliance on server-based systems to power business activities, and thus, server services are also being relied on to execute continuously around the clock. To meet these needs and the required business capacity, server systems can host virtual file systems that are used above a real file system and support more applications reading and writing to the real file system data, via these virtual file systems. Moreover virtual file systems allow for increased flexibility in the allocation of real file system volumes, disks and data arrays.
As noted, a virtual file system sits on top of the real file system. The virtual file system services application access to files, and thus data, on a volume through the use of file handles in the virtual file system, also referred to herein as virtual handles, for use by the application and corresponding file handles to the underlying real file system, also referred to herein as real handles. The virtual file system services application I/O operations by redirecting requests issued on a virtual handle to the corresponding real handle, and thus the intended volume file.
When the real file system encounters an error, also referred to as a corruption, the real file system notes the error and flags the volume as corrupt. Repairing the error can require exclusive access to the volume which, in turn, requires that all real handles to files on the volume must be torn down, or otherwise discarded. Each application that is accessing the volume at the time the error is corrected must reset their access to the respective volume files. This can be very disruptive to the server system and the business that relies upon the data it manages, which can translate into customer dissatisfaction and loss of business.
Thus it is desirable to minimize volume error correction processing on applications that are not utilizing the volume files that require repair by maintaining the applications' virtual handles and re-establishing respective real handles without application intervention. It would also be desirable to perform volume repairs requiring exclusive volume access in a timely manner in order to help ensure that applications that are not accessing volume files requiring repair do not timeout, and thus become negatively affected by the repair, while waiting for the volume to once more become available for their use.